相关文章

*   [General recommendations (简体中文)](/index.php/General_recommendations_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) "General recommendations (简体中文)")

**翻译状态：** 本文是英文页面 [System_maintenance](/index.php/System_maintenance "System maintenance") 的[翻译](/index.php/ArchWiki_Translation_Team_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) "ArchWiki Translation Team (简体中文)")，最后翻译时间：2017-10-16，点击[这里](https://wiki.archlinux.org/index.php?title=System_maintenance&diff=0&oldid=484864)可以查看翻译后英文页面的改动。

要持续使用 Arch linux，需要进行系统日常维护，每个用户都应该及时维护系统。

## Contents

*   [1 检查错误](#.E6.A3.80.E6.9F.A5.E9.94.99.E8.AF.AF)
    *   [1.1 systemd 服务问题](#systemd_.E6.9C.8D.E5.8A.A1.E9.97.AE.E9.A2.98)
    *   [1.2 日志文件](#.E6.97.A5.E5.BF.97.E6.96.87.E4.BB.B6)
*   [2 备份](#.E5.A4.87.E4.BB.BD)
    *   [2.1 配置文件](#.E9.85.8D.E7.BD.AE.E6.96.87.E4.BB.B6)
    *   [2.2 安装的软件包](#.E5.AE.89.E8.A3.85.E7.9A.84.E8.BD.AF.E4.BB.B6.E5.8C.85)
    *   [2.3 Pacman 数据库](#Pacman_.E6.95.B0.E6.8D.AE.E5.BA.93)
    *   [2.4 LUKS headers](#LUKS_headers)
    *   [2.5 系统和用户数据](#.E7.B3.BB.E7.BB.9F.E5.92.8C.E7.94.A8.E6.88.B7.E6.95.B0.E6.8D.AE)
*   [3 更新系统](#.E6.9B.B4.E6.96.B0.E7.B3.BB.E7.BB.9F)
    *   [3.1 升级前的准备](#.E5.8D.87.E7.BA.A7.E5.89.8D.E7.9A.84.E5.87.86.E5.A4.87)
    *   [3.2 避免某些 Pacman 命令](#.E9.81.BF.E5.85.8D.E6.9F.90.E4.BA.9B_Pacman_.E5.91.BD.E4.BB.A4)
    *   [3.3 不支持部分升级](#.E4.B8.8D.E6.94.AF.E6.8C.81.E9.83.A8.E5.88.86.E5.8D.87.E7.BA.A7)
    *   [3.4 注意更新时的提醒](#.E6.B3.A8.E6.84.8F.E6.9B.B4.E6.96.B0.E6.97.B6.E7.9A.84.E6.8F.90.E9.86.92)
    *   [3.5 处理配置文件更新](#.E5.A4.84.E7.90.86.E9.85.8D.E7.BD.AE.E6.96.87.E4.BB.B6.E6.9B.B4.E6.96.B0)
    *   [3.6 回退有问题的更新](#.E5.9B.9E.E9.80.80.E6.9C.89.E9.97.AE.E9.A2.98.E7.9A.84.E6.9B.B4.E6.96.B0)
    *   [3.7 使用包管理器安装软件](#.E4.BD.BF.E7.94.A8.E5.8C.85.E7.AE.A1.E7.90.86.E5.99.A8.E5.AE.89.E8.A3.85.E8.BD.AF.E4.BB.B6)
    *   [3.8 选择开源驱动](#.E9.80.89.E6.8B.A9.E5.BC.80.E6.BA.90.E9.A9.B1.E5.8A.A8)
    *   [3.9 谨慎使用非官方或测试不足的软件包](#.E8.B0.A8.E6.85.8E.E4.BD.BF.E7.94.A8.E9.9D.9E.E5.AE.98.E6.96.B9.E6.88.96.E6.B5.8B.E8.AF.95.E4.B8.8D.E8.B6.B3.E7.9A.84.E8.BD.AF.E4.BB.B6.E5.8C.85)
    *   [3.10 更新镜像列表](#.E6.9B.B4.E6.96.B0.E9.95.9C.E5.83.8F.E5.88.97.E8.A1.A8)
*   [4 清理文件系统](#.E6.B8.85.E7.90.86.E6.96.87.E4.BB.B6.E7.B3.BB.E7.BB.9F)
    *   [4.1 软件包缓存](#.E8.BD.AF.E4.BB.B6.E5.8C.85.E7.BC.93.E5.AD.98)
    *   [4.2 不需要的软件包](#.E4.B8.8D.E9.9C.80.E8.A6.81.E7.9A.84.E8.BD.AF.E4.BB.B6.E5.8C.85)
    *   [4.3 旧配置文件](#.E6.97.A7.E9.85.8D.E7.BD.AE.E6.96.87.E4.BB.B6)
    *   [4.4 破损的软链接](#.E7.A0.B4.E6.8D.9F.E7.9A.84.E8.BD.AF.E9.93.BE.E6.8E.A5)
*   [5 技巧](#.E6.8A.80.E5.B7.A7)
    *   [5.1 使用经过验证的软件包](#.E4.BD.BF.E7.94.A8.E7.BB.8F.E8.BF.87.E9.AA.8C.E8.AF.81.E7.9A.84.E8.BD.AF.E4.BB.B6.E5.8C.85)
    *   [5.2 安装内核的长期支持版本](#.E5.AE.89.E8.A3.85.E5.86.85.E6.A0.B8.E7.9A.84.E9.95.BF.E6.9C.9F.E6.94.AF.E6.8C.81.E7.89.88.E6.9C.AC)
*   [6 参阅](#.E5.8F.82.E9.98.85)

## 检查错误

### systemd 服务问题

检查是否有 systemd 服务失败:

```
$ systemctl --failed

```

更多信息请参考 [Systemd#Analyzing the system state](/index.php/Systemd#Analyzing_the_system_state "Systemd").

### 日志文件

检查 `/var/log` 日志文件中是否存在错误, 检查[systemd 日志](/index.php/Systemd#Journal "Systemd")中的高优先级错误：

```
 # journalctl -p 3 -xb

```

Xorg 的相关错误可以查看 [Xorg#Troubleshooting](/index.php/Xorg#Troubleshooting "Xorg")。

## 备份

把重要数据的备份作为日常维护任务。

其它备份方案可以参考 [同步和备份程序页面](/index.php/Synchronization_and_backup_programs "Synchronization and backup programs")，[Category:System recovery](/index.php/Category:System_recovery "Category:System recovery") 包含其它相关文章。

可以通过 [systemd/Timers](/index.php/Systemd/Timers "Systemd/Timers") 自动备份.

### 配置文件

在编辑任何配置文件前，先保留备份。这样出问题是可以直接还原。[vim](/index.php/Vim "Vim") 和 [emacs](/index.php/Emacs "Emacs") 编辑器会自动备份，[etckeeper](/index.php/Etckeeper "Etckeeper") 可以将 `/etc` 纳入版本控制系统。详情请参考 [dotfiles#Version control](/index.php/Dotfiles#Version_control "Dotfiles")。

### 安装的软件包

维护一个所有安装软件包的列表，这样在不得己进行系统重装时，可以很快恢复到初始环境。

详情参考 [Pacman tips#List of installed packages](/index.php/Pacman_tips#List_of_installed_packages "Pacman tips")。

### Pacman 数据库

参考 [Pacman tips#Back-up the pacman database](/index.php/Pacman_tips#Back-up_the_pacman_database "Pacman tips").

### LUKS headers

如果 LUKS 使用密码加密，建议定期检查和同步 LUKS 加密分区的头部数据。参考 [Dm-crypt/Device encryption#Backup and restore](/index.php/Dm-crypt/Device_encryption#Backup_and_restore "Dm-crypt/Device encryption").

### 系统和用户数据

参考 [System backup](/index.php/System_backup "System backup")。

## 更新系统

建议日常进行[系统完整更新](/index.php/Pacman#Upgrading_packages "Pacman")，这样既能享受到最新的问题修复和安全更新，还可以避免一次更新太多的软件包，手动处理是分批进行的。从社区寻求帮助时，其他人会假定系统进行了完整更新。

手头上保留 Arch 安装盘或其它 Linux "Live" 环境，这样有问题是可以进行修正。如果在生产环境使用 Arch，无法接受任何的停机，那么在更新前请在非关键系统上测试新配置文件和软件包，没有问题的时候再部署到生产环境。

如果软件包来自 [AUR](/index.php/AUR "AUR"), 请注意更新完整.

### 升级前的准备

建议升级前访问 [Arch Linux 主页](https://www.archlinux.org/)查看最新消息（或订阅 [RSS](https://www.archlinux.org/feeds/news/)，或订阅 [arch-announce 邮件列表](https://mailman.archlinux.org/mailman/listinfo/arch-announce/)，或关注 [@archlinux](https://twitter.com/archlinux)。如果升级需要不寻常的用户操作介入时（无法简单地按照 *pacman* 的输出信息处理），以上信息总会给出合适的方法。

在更新[kernel](/index.php/Kernel "Kernel"), [xorg](/index.php/Xorg "Xorg"), [systemd](/index.php/Systemd "Systemd") 和 [glibc](https://www.archlinux.org/packages/?name=glibc)等重要软件之前, 查看[论坛](https://bbs.archlinux.org/)看是否有被报告的出错等问题.

有时候系统更新会出现问题并需要进行一些手动调整，请不要在重要任务前进行系统更新。

### 避免某些 Pacman 命令

避免 [部分更新](#.E4.B8.8D.E6.94.AF.E6.8C.81.E9.83.A8.E5.88.86.E5.8D.87.E7.BA.A7)，不要运行 `pacman -Sy` 而是运行 `pacman -Syu`.

避免 pacman 的 `--force` 选项，**尤其是** `pacman -Syu --force` 这种可能更新多个软件包的时候。`--force` 忽略文件冲突，可能导致文件丢失！如果系统按正常维护，这个选项仅应该在 Arch 开发者明确指导的情况下使用，在 Arch 主页会有通知。

避免使用 `-d` 选项，`pacman -Rdd package` 会在删除软件包时跳过依赖关系检查。如果删除了系统必要的依赖关系，可能导致系统损坏。

### 不支持部分升级

Arch Linux 是滚动发行版，新[库](https://en.wikipedia.org/wiki/Library_(computing) 版本将不断被推送到源。开发者和信任用户会按照需要重新构建源中的所有软件包。如果有本地安装的版本(例如 AUR 软件包)，需要在它们的依赖关系升级了[soname](https://en.wikipedia.org/wiki/soname "wikipedia:soname")时重新编译。

也就是说，部分升级是**不被支持的**。

不要使用 `pacman -Sy package` 或等价命令如 `pacman -Sy` 之后再 `pacman -S package`。在安装软件包前请更新源并升级。同理请特别注意 IgnorePkg/IgnoreGroup 的使用。

如果进行了部分升级，二进制包因为找不到链接库而损坏，**不要通过简单的符号链接进行修正**。库升级 [soname](https://en.wikipedia.org/wiki/soname "wikipedia:soname") 是因为它们**不再向前兼容**。只要 *pacman* 可以运行，使用更新的源进行 `pacman -Syu` 就能修复这些问题。

pacman 软件包提供的 *checkupdates* 脚本可以检查更新但不进行实际安装。

### 注意更新时的提醒

当升级系统时， 请一定要注意[pacman](/index.php/Pacman "Pacman")输出的注意信息。 如果有需要用户手动操作的，请一定要立即搞定。 如果不明白 pacman 输出的信息， 请去论坛搜索或者看Arch Linux首页的新闻。

### 处理配置文件更新

pacman 可能会创建 `.pacnew` 和 `.pacsave` 文件，这是 pacman 会通知用户，而用户需要主动处理这些文件。详细的操作说明请参考：[Pacnew and Pacsave files](/index.php/Pacnew_and_Pacsave_files "Pacnew and Pacsave files").

同样，注意所有你可能会复制或创建的配置文件。如果软件包提供了一个空配置文件，这个文件被复制到主目录，请注意查看示例文件是否有更新。

### 回退有问题的更新

如果软件包可能导致问题，软件包维护者会在更新时给出提示信息。在更新后遇到问题，请先确认 `/var/log/pacman.log` 中有没有提醒信息.

**Tip:** 可以使用 [wat-git](https://aur.archlinux.org/packages/wat-git/) 等工具搜索 pacman 日志。

然后看看 [https://www.archlinux.org/](https://www.archlinux.org/) 中有没有新闻，然后再到论坛上查找类似的问题，如果都没有找到，可用到 [论坛](https://bbs.archlinux.org), [IRC](/index.php/IRC "IRC") 中发帖求助。

[降级](/index.php/Downgrading_packages "Downgrading packages") 是最后的解决方案。

### 使用包管理器安装软件

软件包管理 [pacman](/index.php/Pacman "Pacman") 可以比你更好的记录安装的文件。如果你手动地安装软件，你会过了一会就不知道你到底安装了什么，到底安装在哪里，安装导致的那些冲突，是否安装在了错误的地方，等等问题.

*   使用 [Pacman#Installing packages](/index.php/Pacman#Installing_packages "Pacman") 中介绍的方法安装官方软件包。
*   如果找不到需要的软件包，看看 [AUR](/index.php/AUR "AUR") 中有没有提供软件包打包脚本。
*   如果都没有找到，请学习[创建软件包](/index.php/Creating_packages "Creating packages")。

要清理自己安装的文件，可以[这里](/index.php/Pacman/Tips_and_tricks#Identify_files_not_owned_by_any_package "Pacman/Tips and tricks").

### 选择开源驱动

尽可能地选择开源驱动。避免私有驱动。大多数时候，开源驱动比私有驱动更加稳定可靠。开源驱动的bugs修改起来比较容易快速，但同时私有驱动提供更多的特性和性能，不过也可能带来稳定性的代价。为了避免这个两难选择，可以选择已知的有很好的开源驱动支持的硬件。关于硬件和开源Linux驱动的信息可以在这里找到：[linux-drivers.org](http://www.linux-drivers.org/).

### 谨慎使用非官方或测试不足的软件包

在使用 AUR 或 [非官方软件仓库](/index.php/Unofficial_user_repository "Unofficial user repository")中的软件包时应有预防措施。大部分软件包都是由用户提供的，并不能提供和官方软件仓库相同的质量。谨慎使用 [AUR helpers](/index.php/AUR_helpers "AUR helpers") ，他们简化了 AUR 中的软件包的安装过程, 在编译和安装 AUR 中的软件包之前，**务必**检查软件包的 PKGBUILD 确保其中不含有错误或恶意的代码。

只在绝对必要的情况下使用第三方的软件仓库.[pacman/Tips and tricks#Maintenance](/index.php/Pacman/Tips_and_tricks#Maintenance "Pacman/Tips and tricks")提供了清理软件的方法。

### 更新镜像列表

镜像的质量会随着时间而变化，有些镜像会下线或者同步和下载出问题，所以请注意更新 pacman 的镜像列表，详情参考 [mirrors](/index.php/Mirrors "Mirrors")。

## 清理文件系统

检查磁盘空间的使用状况，删除占用空间较大的无用文件：

*   [List of applications#Disk usage display](/index.php/List_of_applications#Disk_usage_display "List of applications").
*   [List of applications#Disk cleaning](/index.php/List_of_applications#Disk_cleaning "List of applications").

### 软件包缓存

从 `/var/cache/pacman/pkg/` 删除不需要的 `.pkg` 可以减少空间占用。详情参考 [Pacman#Cleaning the package cache](/index.php/Pacman#Cleaning_the_package_cache "Pacman").

### 不需要的软件包

从系统里面删除不需要的软件包可以减少空间占用和维护难度。详情参考 [Pacman/Tips and tricks#Removing unused packages (orphans)](/index.php/Pacman/Tips_and_tricks#Removing_unused_packages_.28orphans.29 "Pacman/Tips and tricks").

### 旧配置文件

旧的配置文件可能和新软件版本不兼容，所以请定期清理和更新配置文件，尤其是主目录和 `~/.config`. 在重新安装或共享 /home 时，注意下面文件夹：

*   `~/.config/` -- 软件保存配置文件的地方
*   `~/.cache/` -- 程序缓存大小可能持续增加
*   `~/.local/share/` -- 可能有旧文件

参考 [XDG Base Directory support](/index.php/XDG_Base_Directory_support "XDG Base Directory support").

为了帮助清理 home 目录，建议维护一份不需要的文件列表并定期清理，例如使用 [rmshit.py](https://github.com/lahwaacz/Scripts/blob/master/rmshit.py).

[rmlint](https://www.archlinux.org/packages/?name=rmlint) 也可以用来查找不需要的重复文件，空文件和损坏的软链接。

### 破损的软链接

系统中可能存在老的，损坏的软链接，应该删除它们。方法可以参考 [here](https://unix.stackexchange.com/questions/34248/how-can-i-find-broken-symlinks) 和 [here](http://www.commandlinefu.com/commands/view/8260/find-broken-symlinks).

下面命令可以列出所有有问题的软链接，可以检查并删除列表中的文件。

```
  # find -xtype l -print

```

## 技巧

### 使用经过验证的软件包

Arch 的滚动发行让用户可以使用最新的功能和上游更新，但是这也增加了系统维护的难度。为了增加稳定性，可以尽量使用经过验证的稳定版本。这些软件包不太容易在升级时遇到问题。选用具有活跃开发社区的软件，选用用户能力更出众的软件，这样在出问题是更容易获得帮助。

避免使用测试仓库，这些软件包都是实验性质，不适合安装到稳定系统。因此对于[AUR](/index.php/AUR "AUR")中的包以及部分 community 中的包需要一些谨慎，这些开发中的包是直接从上游开发版分支中获取到的，通常会在包的名字上注有：dev, devel, svn, cvs, git, hg, 或是 darcs 的信息。

### 安装内核的长期支持版本

[linux-lts](https://www.archlinux.org/packages/?name=linux-lts) 是 Arch 官方提供的 Linux kernel 的长期支持版本。内核上游开发者针对此版本提供了长期支持，包括安全补丁和功能 backports。适用于需要长期支持的用户，也可以将此内核作为新内核升级的后备内核。

需要编辑 [bootloader](/index.php/Bootloader "Bootloader") 的启动加载项，启动到 `vmlinuz-linux-lts` 和 `initramfs-linux-lts.img`。

## 参阅

*   [Arch News Bash Script](https://bbs.archlinux.org/viewtopic.php?id=146850)